package com.zrz.service;

import com.zrz.dao.auto.RedcodeMapper;
import com.zrz.model.auto.Redcode;
import com.zrz.model.auto.RedcodeExample;
import com.zrz.model.auto.User;
import com.zrz.util.ExcelUtil;
import org.apache.commons.collections.CollectionUtils;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.*;

@Service
public class RedCodeService {
    @Autowired
    private RedcodeMapper redcodeMapper;
    @Autowired
    private UserService userService;
    public List<Redcode> list(){
        RedcodeExample redcodeExample=new RedcodeExample();
        redcodeExample.createCriteria();
        redcodeExample.setOrderByClause(" status");
        return redcodeMapper.selectByExample(redcodeExample);
    }

//    public List<Redcode> resolveExcel(MultipartFile file, Integer type) {
//        List<Redcode> list=new ArrayList<>();
//        Sheet sheet = null;
//        Workbook wb = null;
//        Row row0 = null;
//        int sqlResult = 0;
//        int failCount = 0;
//        try {
//            InputStream is = file.getInputStream();
//            String fileName = file.getOriginalFilename();
//            wb = ExcelUtil.readExcel(fileName, is);
//            if (wb != null) {
//                ArrayList<String> header = new ArrayList<>();
//                sheet = wb.getSheetAt(0);
//                int rownum = sheet.getPhysicalNumberOfRows();
//                if (rownum > 1) {
//                    Redcode redcode=new Redcode();
//                    row0 = sheet.getRow(0);
//                    int colnum = row0.getPhysicalNumberOfCells();
//                    for (int m = 0; m < colnum; m++) {
//                        header.add((String) ExcelUtil.getCellFormatValue(row0.getCell(m)));
//                    }
//                    StringBuffer msg = new StringBuffer();
//                    for (int i = 1; i < rownum; i++) {
//                        StringBuffer remark = new StringBuffer();
//                        Row row = sheet.getRow(i);
//                        if (row != null) {
//
//                            for (int j = 0; j < colnum; j++) {
//                                if(j==0){
//                                    redcode.setRedcode((String)ExcelUtil.getCellFormatValue(row.getCell(j)));
//                                }
//
//                            }
//                            redcode.setStatus(false);
//
//                            list.add(redcode);
//                        }
//                    }
//                    msg.append(String.format("本次共成功导入%d个用户，失败%d个用户。", sqlResult, failCount));
//                }
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        if(list.size()>0){
//            for(int i=0;i<list.size();i++){
//                redcodeMapper.insert(list.get(i));
//            }
//        }
//        return list;
//    }

    public Map getRedCode(User user,String code){
        Map map=new HashMap();
        if(user.getMember()){
            map.put("code",-1);
            map.put("msg","您已是会员，请勿重新操作");
            return map;
        }
        RedcodeExample redcodeExample=new RedcodeExample();
        redcodeExample.createCriteria().andRedcodeEqualTo(code).andStatusEqualTo(false);
        List<Redcode> redcodeList=redcodeMapper.selectByExample(redcodeExample);
        if(CollectionUtils.isEmpty(redcodeList)){
            map.put("code",-1);
            map.put("msg","兑换码无效");
            return map;
        }
        Redcode redcode=redcodeList.get(0);
        redcode.setStatus(true);
        redcode.setUid(user.getId());
        redcode.setUpdateTime(new Date());
        redcodeMapper.updateByPrimaryKeySelective(redcode);
        user.setActType(1);
        userService.activityUser(user,redcode);
        map.put("code",1);
        map.put("msg","激活会员成功");
        return  map;
    }
    public static void main(String args[]){
for(int i=0;i<3000;i++){


        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        Random random=new Random();
        StringBuffer sb=new StringBuffer();
        for(int k=0;k<4;k++){
            int number=random.nextInt(52);
            sb.append(str.charAt(number));
        }
        String str1="0123456789";
        for(int j=0;j<2;j++){
            int number=random.nextInt(10);
            sb.append(str1.charAt(number));
        }
        System.out.println(sb.toString());
    }
    }
}
